/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package InterfaceGraphique.commonPannel;

import InterfaceGraphique.BoiteMessageChoix;
import InterfaceGraphique.FenJeuEntrer;
import InterfaceGraphique.MainApplication;
import cartes.Carte;
import java.awt.Dimension;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import javax.swing.*;
import plateau.Joueur;
import plateau.exceptions.DefausserClasseRaceException;

/**
 *
 * @author Arthur
 */
public class PanInventaire extends PanListeCarte {
    JPanel pButtons;
    JButton bDefausser;
    JScrollPane jsTest;

    public PanInventaire(String desc, int width, int height, int pan, JFrame parent) {
        super(desc, width, height, pan, parent);
        initButtons();
    }
    
    public PanInventaire(ArrayList<Carte> cartes, String desc, int width, int height, int pan, JFrame parent, boolean selectable) {
        super(cartes, desc, width, height, pan, parent, selectable); 
        initButtons();
    }
    
    public void initButtons() {
        this.pCartes.setPreferredSize(new Dimension(width - 120, height - 50 ));
        
        this.jsTest = new JScrollPane(this.pCartes);
        //this.jsTest.setPreferredSize(new Dimension(width - 120, height - 50));
        this.jsTest.setBounds(0, 0, width - 120, height - 40);
        this.jsTest.setBackground(new java.awt.Color(110,48,34));
        this.add(jsTest);
        //this.pCartes.setPreferredSize(new Dimension(width*2, height*2 ));
        //this.jsTest.setMaximumSize(new Dimension(width - 20, height - 100));
        
        // Les boutons
        this.pButtons = new JPanel();
        this.pButtons.setBounds(0, 0, 100, height - 20);
        this.pButtons.setOpaque(false);
        this.add(this.pButtons);  
        
        this.bDefausser = new JButton("Défausser");
        this.bDefausser.setPreferredSize(new Dimension(90, 40));
        this.bDefausser.setEnabled(false);
        this.pButtons.add(this.bDefausser);

        this.bDefausser.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                bDefausserActionPerformed(evt);
            }
        });
        
    }
    
    public void changeBoutonDefausser(boolean visible) {
        bDefausser.setEnabled(visible);    
    }
    
    public void bDefausserActionPerformed(java.awt.event.ActionEvent evt) {
        try {
            // TODO add your handling code here:  
            Joueur j = MainApplication.getJoueurEnCours(); 
            j.defausserInventaire(this.getSelected());    
            this.changeBoutonDefausser(false); 
            ((FenJeuEntrer) this.parent).upCartes(j); 
        }
        catch( DefausserClasseRaceException e ) {
            BoiteMessageChoix b = new BoiteMessageChoix(e.getMessage());
            if( b.getOption() == JOptionPane.OK_OPTION ) {
                Joueur j = MainApplication.getJoueurEnCours(); 
                e.defausserInventaire(this.getSelected(), j);    
                this.changeBoutonDefausser(false); 
                ((FenJeuEntrer) this.parent).upCartes(j);
            }
        }
    }
    
    
    public void setCartes(ArrayList<Carte> cartes, boolean selectable) {
        int addSize = ((cartes.size() - 8) >= 0 ) ? cartes.size() - 8 : 0;
        //this.pCartes.setPreferredSize(new Dimension((width - 45) + (135 * addSize) , height - 100));       
        super.setCartes(cartes, selectable);
        
    }
    
    public void setSelected(PanCarte c) {
        if(c != null ) {
            for (Map.Entry<PanCarte, Carte> e : ((HashMap<PanCarte, Carte>) this.cartes).entrySet()) {
                if(! e.getKey().equals(c) )
                    e.getKey().setSelected(false);  
                else { 
                    this.changeBoutonDefausser(true);
                }
            }
        }
        else {
            this.changeBoutonDefausser(false);
        }
    }
}
